Telegram Group & Telegram Channel
🧵 Три способа использовать каналы в Go

Каналы в Go — мощный инструмент для взаимодействия между горутинами. Рассмотрим три идиоматичных способа их использования:

1. Fan-out (расщепление задач)

Fan-out — это когда несколько воркеров читают из одного канала задач. Это позволяет обрабатывать задачи параллельно:


ch := make(chan int)
for i := 0; i < 3; i++ {
go func() {
for task := range ch {
doWork(task)
}
}()
}


Задачи отправляются в ch, и любая из горутин может их подобрать и обработать.



2. Fan-in (агрегация результатов)

Fan-in — это сбор результатов от нескольких источников в один канал. Используется, когда у нас несколько генераторов данных:


ch1 := make(chan int)
ch2 := make(chan int)
out := make(chan int)

go func() {
for {
select {
case v := <-ch1:
out <- v
case v := <-ch2:
out <- v
}
}
}()


Мы слушаем оба канала и всё складываем в out, где далее можно агрегировать или обрабатывать данные.



3. Pipelines (конвейеры обработки)

Конвейеры — это цепочки обработки, где выход одного этапа — это вход следующего. Каждый шаг может быть реализован как горутина, соединённая каналами:


func gen() <-chan int {
out := make(chan int)
go func() {
for i := 0; i < 10; i++ {
out <- i
}
close(out)
}()
return out
}

func square(in <-chan int) <-chan int {
out := make(chan int)
go func() {
for v := range in {
out <- v * v
}
close(out)
}()
return out
}

for v := range square(gen()) {
fmt.Println(v)
}


Такой стиль позволяет писать легко тестируемый, модульный и читаемый код.


https://www.dolthub.com/blog/2024-06-21-channel-three-ways/

👉 @golang_lib



tg-me.com/golang_lib/458
Create:
Last Update:

🧵 Три способа использовать каналы в Go

Каналы в Go — мощный инструмент для взаимодействия между горутинами. Рассмотрим три идиоматичных способа их использования:

1. Fan-out (расщепление задач)

Fan-out — это когда несколько воркеров читают из одного канала задач. Это позволяет обрабатывать задачи параллельно:


ch := make(chan int)
for i := 0; i < 3; i++ {
go func() {
for task := range ch {
doWork(task)
}
}()
}


Задачи отправляются в ch, и любая из горутин может их подобрать и обработать.



2. Fan-in (агрегация результатов)

Fan-in — это сбор результатов от нескольких источников в один канал. Используется, когда у нас несколько генераторов данных:


ch1 := make(chan int)
ch2 := make(chan int)
out := make(chan int)

go func() {
for {
select {
case v := <-ch1:
out <- v
case v := <-ch2:
out <- v
}
}
}()


Мы слушаем оба канала и всё складываем в out, где далее можно агрегировать или обрабатывать данные.



3. Pipelines (конвейеры обработки)

Конвейеры — это цепочки обработки, где выход одного этапа — это вход следующего. Каждый шаг может быть реализован как горутина, соединённая каналами:


func gen() <-chan int {
out := make(chan int)
go func() {
for i := 0; i < 10; i++ {
out <- i
}
close(out)
}()
return out
}

func square(in <-chan int) <-chan int {
out := make(chan int)
go func() {
for v := range in {
out <- v * v
}
close(out)
}()
return out
}

for v := range square(gen()) {
fmt.Println(v)
}


Такой стиль позволяет писать легко тестируемый, модульный и читаемый код.


https://www.dolthub.com/blog/2024-06-21-channel-three-ways/

👉 @golang_lib

BY Библиотека Go (Golang) разработчика




Share with your friend now:
tg-me.com/golang_lib/458

View MORE
Open in Telegram


Библиотека Go Golang разработчика Telegram | DID YOU KNOW?

Date: |

Pinterest (PINS) Stock Sinks As Market Gains

Pinterest (PINS) closed at $71.75 in the latest trading session, marking a -0.18% move from the prior day. This change lagged the S&P 500's daily gain of 0.1%. Meanwhile, the Dow gained 0.9%, and the Nasdaq, a tech-heavy index, lost 0.59%. Heading into today, shares of the digital pinboard and shopping tool company had lost 17.41% over the past month, lagging the Computer and Technology sector's loss of 5.38% and the S&P 500's gain of 0.71% in that time. Investors will be hoping for strength from PINS as it approaches its next earnings release. The company is expected to report EPS of $0.07, up 170% from the prior-year quarter. Our most recent consensus estimate is calling for quarterly revenue of $467.87 million, up 72.05% from the year-ago period.

Telegram Gives Up On Crypto Blockchain Project

Durov said on his Telegram channel today that the two and a half year blockchain and crypto project has been put to sleep. Ironically, after leaving Russia because the government wanted his encryption keys to his social media firm, Durov’s cryptocurrency idea lost steam because of a U.S. court. “The technology we created allowed for an open, free, decentralized exchange of value and ideas. TON had the potential to revolutionize how people store and transfer funds and information,” he wrote on his channel. “Unfortunately, a U.S. court stopped TON from happening.”

Библиотека Go Golang разработчика from us


Telegram Библиотека Go (Golang) разработчика
FROM USA